#ifndef _BACKDROP_SFX_H_
#define _BACKDROP_SFX_H_

namespace camera
{
	class AbstractCamera;
}
#include "math/vec2.h"
#include <string>
#include <vector>

namespace backdrop
{
class Backdrop;
class BackdropSFX;

class	BackgdropSFXSet
{
public:
	BackgdropSFXSet(camera::AbstractCamera* pCam, BackdropSFX* pParent) : m_pCam(pCam), m_pParent(pParent) {};
	virtual ~BackgdropSFXSet() {};

	virtual	void				Render() = 0;
	virtual void				Tick(float dt)	= 0;
	BackdropSFX*				GetParent() const { return m_pParent; };
protected:
	camera::AbstractCamera*		m_pCam;
	BackdropSFX*				m_pParent;
	
};

class BackdropSFX
{
public:
	BackdropSFX(camera::AbstractCamera* pCam, Backdrop* pBackdrop);
	virtual ~BackdropSFX();

	virtual void				Tick(float dt);
	virtual void				Render();
	virtual void				RenderBackground() {}
	virtual void				RenderForeground() {}
	virtual void				Init() {}
	virtual void				AddScore(int Score) {}
	virtual const math::Vec2&	GetOffset() const { return m_Offset; }

protected:
	math::Vec2					m_Offset;
	camera::AbstractCamera*		m_pCamera;
	std::vector<BackgdropSFXSet*>		m_Set;
	Backdrop*					m_pBackdrop;
};

}	//namespace backdrop

#endif // _BACKDROP_SFX_H_